#pragma once
#include "common.h"
#include "IWindow.h"

enum WND_STATUS {
	WND_OK,
	WND_FAIL,
	WND_QUIT
};

#if defined _WIN32 || defined WIN32
	#define WND_HANDLE HWND
#elif defined X11 || __APPLE__
    #define WND_HANDLE void*
#elif defined __ANDROID__
	#define WND_HANDLE int
#else
	#error Undefined platform
#endif

struct IEngineWindow : public IWindow {
	virtual uint32_t 	GetWidth() const = 0;
	virtual uint32_t 	GetHeight() const = 0;
	virtual WND_HANDLE 	GetWindowHandle() const = 0;
	virtual WND_STATUS 	ProcessMessage() const = 0;
};
typedef shared_ptr<IEngineWindow> IEngineWindowPtr;

IEngineWindowPtr CreateEngineWindow(const WindowSetup& setup);